package com.dz.mapper;

import com.dz.bean.Booking;
import com.dz.util.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@Mapper
public interface BookingDao {
    //预约
    int add(@Param("booking") Booking booking);

    //取消预约
    int delete(@Param("id") Integer id);

    //修改预约信息
    int edit(@Param("booking") Booking booking);

    //查询所有预约信息
    List<Booking> all(@Param("booking") Booking booking);

    //根据ID查询预约信息
    Booking findById(@Param("id") Integer id);

    //根据游客ID查询预约记录总数
    int countByVisitorId(@Param("visitorId") Integer visitorId);

    //根据游客id分页查询预约信息
    List<Booking> findByVisitorId(@Param("visitorId") Integer visitorId, @Param("page") Page page);

    //查询预约时间是否重复
    List<Booking> findBookingsInTimeRange(@Param("guideId") Integer guideId,
                                          @Param("startTime") LocalDate startTime,
                                          @Param("endTime") LocalDate endTime);

    //更新预约记录支付状态
    int updateToPaid(@Param("id") Integer id);
}
